const dispatchRequest = require('./dispatchRequest')

function request (config) {
    // 1 发送请求
    console.log(`发送 AJAX 请求，请求类型为：${config.method}请求`)
    // 2 创建一个 promise对象
    let promise = Promise.resolve(config)
    // 3 声明一个数组链
    let chains = [dispatchRequest, undefined]     // undefined占位
    // 4 处理拦截器
    this.interceptors.request.handlers.forEach(item => {
        chains.unshift(item.fulfilled, item.rejected)
    })
    this.interceptors.response.handlers.forEach(item => {
        chains.push(item.fulfilled, item.rejected)
    })
    // 5 调用 then 方法，将请求结果包装成 promise 对象传出
    while (chains.length) {
        promise = promise.then(chains.shift(), chains.shift())
    }
    // 6 返回结果
    return promise
}

module.exports = request